<?php

/*
 * Copyright 2008 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#namespace tehframework\annotations;

#use tehframework\testing\phpunit\TestCase;

require_once 'test/testHelper.php';

class DocBlockDefinitionTest extends TestCase
{
	function testToStringReturnsStringRepresentatingOfObject()
	{
		$this->assertSame('', (string)new DocBlockDefinition());
	}
	
	function testToStringReturnsStringRepresentatingOfObject2()
	{
		$this->assertNotSame('', (string)new DocBlockDefinition(
			'Short',
			'Long',
			array(new TagDefinition('unknown')),
			array(new AnnotationDefinition('Fake'))
		));
	}
	
	function testConstructSetsShortDescriptionProperty()
	{
		$val = 'Short';
		
		$def = new DocBlockDefinition($val);
		
		$this->assertSame($val, $def->shortDescription);
	}
	
	function testConstructSetsLongDescriptionProperty()
	{
		$val = 'Long';
		
		$def = new DocBlockDefinition(null, $val);
		
		$this->assertSame($val, $def->longDescription);
	}
	
	function testConstructSetsTagDefinitionsProperty()
	{
		$val = array(new TagDefinition('unknown'));
		
		$def = new DocBlockDefinition(null, null, $val);
		
		$this->assertSame($val, $def->tagDefinitions);
	}
	
	function testConstructSetsAnnotationDefinitionsProperty()
	{
		$val = array(new AnnotationDefinition('Fake'));
		
		$def = new DocBlockDefinition(null, null, array(), $val);
		
		$this->assertSame($val, $def->annotationDefinitions);
	}
}